generovani JPG nahledu

Otázka od: Tomas Bradle

21. 8. 2004 10:59

Zdravim vsechny,

mam nasledujici proceduru, ktera generuje JPG nahledy,
zdroj je v ms: TMemoryStream (vytazeno z blobu),
vysledek je prev: TJPEGImage.

  procedure GenPreview;
  begin
  jpg:=TJPEGImage.create;
  try
    ms.Position:=0;
    jpg.LoadFromStream(ms);
    bmp:=TBitmap.Create;
    try
      bmp.Assign(jpg);
      bmp2:=TBitmap.Create;
      try
        bmp2.Height:=100;
        bmp2.Width:=100*bmp.Width div bmp.Height;
        bmp2.Canvas.StretchDraw(bmp2.canvas.ClipRect, bmp);
        prev.Assign(bmp2);
       finally
        bmp2.free;
       end; {try}
     finally
      bmp.free;
     end; {try}
   finally
    jpg.free;
   end; {try}
  end;

Nevi nekdo proc, kdyz na pocitaci mam nastavene rozliseni
obrazovky 16-bit barva, tak je vsechno OK, ale kdyz nastavim
256 barev, tak ty nahledy jsou cerny a misto tech 5-6kB maji
jen cca 1kB ?

diky

Tomas Bradle
t.bradle@worldonline.cz



Odpovedá: Pavol Stugel, NETGraphics

21. 8. 2004 13:31

... no to bude tym ze kazdy ten obrazok chce zmodifikovat tych 236
farieb co ma system
k dispoziicii "k obrazu svojmu" a vysledkom je cierno cierna tma ...
proste 256 je malo
na obrazky a s tym musis ratat ... mozes napr. v pripade 256 farebneho
modu zobrazovat
grayscale obrazky co je lepsi efekt ako pokus o farbu ...


>Nevi nekdo proc, kdyz na pocitaci mam nastavene rozliseni
>obrazovky 16-bit barva, tak je vsechno OK, ale kdyz nastavim
>256 barev, tak ty nahledy jsou cerny a misto tech 5-6kB maji
>jen cca 1kB ?
>


Odpovedá: Tomas Bradle

22. 8. 2004 3:24

No to by bylo, kdybych to chtel zobrazovat, ale ja nic nezobrazuju. Pouze
presampluju a zase ulozim. Proc do toho taha rozliseni obrazovky to nevim.
Melo by se resamplovat i na serveru, kde nemusi byt zrovna Hi-tech grafika.
Na zobrazovani je tech 256 samozrejme malo.

Tomas Bradle
t.bradle@worldonline.cz



----- Original Message -----
From: "Pavol Stugel, NETGraphics" <palo@netgraphics.sk>
To: <delphi-l@clexpert.cz>
Sent: Saturday, August 21, 2004 2:30 PM
Subject: Re: generovani JPG nahledu


> ... no to bude tym ze kazdy ten obrazok chce zmodifikovat tych 236
> farieb co ma system
> k dispoziicii "k obrazu svojmu" a vysledkom je cierno cierna tma ...
> proste 256 je malo
> na obrazky a s tym musis ratat ... mozes napr. v pripade 256 farebneho
> modu zobrazovat
> grayscale obrazky co je lepsi efekt ako pokus o farbu ...
>
>
> >Nevi nekdo proc, kdyz na pocitaci mam nastavene rozliseni
> >obrazovky 16-bit barva, tak je vsechno OK, ale kdyz nastavim
> >256 barev, tak ty nahledy jsou cerny a misto tech 5-6kB maji
> >jen cca 1kB ?
> >
>



Odpovedá: Pavol Stugel, NETGraphics

22. 8. 2004 8:38

...skus sa pohrat s PixelFormat a doplnit to niekam za .Create,
ale skor tam bude nejaka komplikovanost v tom kode ...
(resp. ak tam mas NT 3.5,4 alebo zly ovladac na grafarne,tak
v moze byt aj chybna imp. stretchdraw funkcie ..)


..a daj jpg, bmp2, bmp do lokalnych premennych a
nemusis to komplikovat cez tie try finally ...

 bmp2.Height:=100;
        bmp2.Width:=100*bmp.Width div bmp.Height;
-> bmp2.PixelFormat := pf32bit;
        bmp2.Canvas.Stretch